/*->h.bf */

#define BUFFRAM  1
#define BUFFMOD  2
#define BUFFCRIT 4

#define DEFBUFFSIZE 0x8000

#define BUFFMINSIZE 0x100


typedef struct buffer
{
 char        * data;    /* pointer to data          */
 struct buff * next;
 struct buff * prev;
 int           size;    /* size of buffer           */
 int           length;  /* size of data in buffer   */
 int           p;       /* current file pointer     */
 int           base;    /* offset in file of buffer */
 int           flags;
 int           fh;      /* file handle              */
} buffer;




extern os_error * bf_seek(buffer * bf,int posn,int whence);
extern os_error * bf_eof(buffer * bf,int * eof);
extern os_error * bf_tell(buffer * bf,int * posn);
extern os_error * bf_getc(buffer * bf,int * c);
extern os_error * bf_gets(buffer * bf,int * c);
extern os_error * bf_putc(buffer * bf,int c);
extern os_error * bf_puts(buffer * bf,int c);
extern os_error * bf_geti(buffer * bf,int * c);
extern os_error * bf_puti(buffer * bf,int c);
extern os_error * bf_readn(buffer * bf,void * b,int len,int * n);
extern os_error * bf_read(buffer * bf,void * b,int len);
extern os_error * bf_writen(buffer * bf,void * b,int len,int * n);
extern os_error * bf_write(buffer * bf,void * b,int len);
extern os_error * bf_open(char * filename,int mode,int size,buffer * bf);
extern os_error * bf_openc(char * filename,int mode,int type,int size,
                                                            buffer * bf);
extern os_error * bf_close(buffer * bf,os_error * ep);



